1. Field of the Invention
As processors have gotten cheaper, more and more digital data processing systems have appeared in which several processors operate as coprocessors. A coprocessor is a processor which cooperates with another processor to process data. Classic examples of coprocessors are floating-point units for performing floating point arithmetic and I/O processors for handling the flow of data between peripheral devices such as terminals and the system memory. The relationship between two coprocessors lies along a continuum whose ends are described by the notions tightly coupled and loosely coupled. One coprocessor is tightly coupled to another when there is a high degree of direct interaction between the coprocessors. For example, floating point units are typically tightly coupled. The processor served by the floating point unit provides the operands to the floating point unit, indicates the operation to be performed, and receives the results directly from the floating point unit. The results typically not only include the result value, but also signals indicating the status of the floating point operation. I/O processors, on the other hand, are typically loosely coupled. Communication with the processor they serve is generally through the system memory. When the processor requires the assistance of the I/O processor to output data, the processor places the output data and a description of what the I/O processor is to do with it in memory at a location known to the I/O processor and then indicates to the I/O processor that the data is in memory. The I/O processor thereupon responds to the indication by retrieving the data from memory and outputting it to the desired peripheral device. When it is finished, it puts a record of the status of the operation in memory at a location known to the processor and indicates to the processor that it has finished the memory operation. The processor then responds to the indication by reading the data at the location to determine the status of the output operation.
2. Description of the Prior Art
The development of systems using coprocessors has been spurred by the rise of cheap and powerful microprocessors. A problem with the use of microprocessors as coprocessors, however, has been the fact that most microprocessors were designed to be the primary processor in a system and are consequently not easily adapted to the various roles which a coprocessor may play in a system. One example of the difficulties arising out of the use of such prior art microprocessors as coprocessors is the use of such devices as bus masters or bus slaves.
A bus master is a processor which is attached to a bus and controls access by other processors to the bus. The other processors are termed bus slaves. A conventional microprocessor may of course be used as either a bus master or bus slave, but either use will require the addition of external logic, special programming, or both, leading to an increase in the cost and complexity of system design. It is an object of the invention disclosed herein to provide a microprocessor which may be used wither as bus master or bus slave without the addition of external logic or special programming.